package rxb.demo.nyzentity;

import java.io.Serializable;

/**
 * 实体类 - 用户 - 描述对象的 -
 * 类和对象之间的关系
 * 1. 类是构建对象的蓝图，类是构建对象的模板，类是抽象的概念
 * 2. 对象是类的具体化，对象是类的实例化，对象是具体的
 *
 * 比如:水果 - 香蕉，苹果...
 *     动物 - 小狗，小咪咪...
 *
 * java.io.Serializable - 序列化接口 - 标记接口
 * 序列化 - 内存中的对象持久化到磁盘上的DB
 * 反序列化
 */
public class User implements Serializable{
    //类里面拥有哪些东西?
    //属性

    //面向过程C - 程序 = 算法+数据结构，优先考虑的是具体怎么做

    //面向对象 - 抽象出业务中的关键的"对象"，然后分析对象的属性(对象拥有什么)以及对象的功能
    //(对象能够干什么，对象的方法（接口中）),接着分析对象与对象之间的关系，最后一步才是考虑具体怎么实现

    //对象之间的关系 - UML(类图，流程图，时序图，状态图，活动图....) - 需求分析师
    //1. 自关联
    //1:1 - 1个丈夫拥有1个妻子，1个妻子属于1个丈夫
    //1:N - 1个订单拥有多条订单明细，多个订单明细属于一个订单。   70%
    //N:N - 1个学生可以选择多门课程，一门可以被多个学生来选择


    //对象的标识
    private Integer id;

    //用户名
    private String username;

    //密码
    private String password;

    //对象的角色
    private int power;//0-超级管理员  1-普通人员

    //lombok
    //空参构造


    public User() {
    }

    //带参构造
    public User(String username, String password, int power) {
        this.username = username;
        this.password = password;
        this.power = power;
    }

    //getter/setter


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getPower() {
        return power;
    }

    public void setPower(int power) {
        this.power = power;
    }

    //toString

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("User{");
        sb.append("id=").append(id);
        sb.append(", username='").append(username).append('\'');
        sb.append(", password='").append(password).append('\'');
        sb.append(", power=").append(power);
        sb.append('}');
        return sb.toString();
    }
}
